// initial references to the document
var ncnameinsrd = $("#ncnameinsrd");
var nccpf = $("#nccpf");
var ncbirthdate = $("#ncbirthdate");
var ncvehvendor = $("#ncvehvendor");
var ncvehimodel = $("#ncvehimodel");
var ncbtquote = $("#ncbtquote");

// secondary model variables
var cotacao = {// this is the CotacaoTO materialized in the Javascript side
	id : 0,
	corretor : {
		id : 0
	},
	segurado : {
		id : 0,
		nome : "",
		cpf : 0,
		dataNascimento : 0
	},
	veiculo : null
};

var veiculosel = {
	id : 0,
	marca : "",
	modelo : ""
};

// here comes the util funcions section
function fillForm() {
	ncnameinsrd.val(cotacao.segurado.nome);
	nccpf.val(cotacao.segurado.cpf);
	ncbirthdate.datepicker("setDate", //
	new Date(cotacao.segurado.dataNascimento));
	ncvehvendor.val(cotacao.veiculo.marca);
	ncvehimodel.val(cotacao.veiculo.modelo);
}
function fillBean() {
	if (window.currentuser)
		cotacao.corretor.id = window.currentuser.corretor.id;
	cotacao.segurado.nome = ncnameinsrd.val();
	cotacao.segurado.cpf = nccpf.val().replace(/\D/g, "");// removing mask
	cotacao.segurado.dataNascimento = //
	ncbirthdate.datepicker("getDate").getTime();
	cotacao.veiculo = veiculosel;
}
function validateForm() {
	if (ncnameinsrd.val() == "")
		throw new Error("Inform name");
	if (ncbirthdate.val() == "")
		throw new Error("Inform birth date");

}
// here comes the screen events.
ncvehvendor.autocomplete({
	source : function(req, res) {
		CotacaoFacade.getMarcas(ncvehvendor.val(), {
			callback : function(ret) {
				res(ret);// simple string list
			}
		});
	}
});
ncvehimodel.autocomplete({
	source : function(req, res) {
		var filtro = {
			marca : ncvehvendor.val(),
			modelo : ncvehimodel.val()
		};
		CotacaoFacade.getModelos(filtro, {
			callback : function(ret) {
				// mapping complex object to the autocomplete format
				res($.map(ret, function(a) {
					return {
						label : a.modelo,
						value : a.modelo,
						dadoCustomizado : a
					// preserve original data
					};
				}));
			}
		});
	},
	select : function(e, ui) {// recovering original data
		veiculosel = ui.item.dadoCustomizado;
	}
});
ncbtquote.click(function() {
	try {
		validateForm();
		fillBean();
		CotacaoFacade.calcular(cotacao, {
			callback : function(ret) {
				window.prevcotacao = cotacao;
				window.demonstrativo = ret;
				centernav("cotacao/demonstrativo");
			}
		});
	} catch (e) {
		alert(e.message);
	}
});

// finally basic screen setup
$("button").button();
$(".dtpicker").datepicker();
$(".cpf").mascara("cpf");
// some sample about how to do state chaining from one screen to another
if (window.prevcotacao) {
	cotacao = window.prevcotacao;
	veiculosel = cotacao.veiculo;
	fillForm();
	window.prevcotacao = null;
}
//